package com.example.onlinemonitoring;

import com.example.onlinemonitoring.Util.CRC16;
import com.example.onlinemonitoring.autoRun.ComTcp;
import tk.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
// 这个注解是Spring Boot的核心注解，用于标识这是一个Spring Boot应用程序的入口类。它会自动扫描并加载应用程序的配置、组件和Bean。
@SpringBootApplication
// 这个注解用于扫描并注册Servlet组件。它会自动扫描带有@WebServlet、@WebFilter和@WebListener注解的类，并将它们注册为Servlet组件。
@ServletComponentScan
// 这个注解用于启用配置属性绑定。它会自动将带有@ConfigurationProperties注解的类注册为Spring
// Bean，并将配置文件中的属性值绑定到这些类的属性上。
@EnableConfigurationProperties
// 这个注解用于扫描并注册MyBatis的Mapper接口。它会自动扫描指定包下的Mapper接口，并将它们注册为Spring
// Bean，以便在其他组件中使用。
@MapperScan(basePackages = "com.example.onlinemonitoring.dao")
// 这个类是应用程序的主类，并继承了SpringBootServletInitializer类。SpringBootServletInitializer是一个支持使用Servlet容器部署Spring
// Boot应用程序的辅助类。通过继承它并重写configure方法，可以将Spring Boot应用程序部署为WAR文件。
public class OnlineMonitoringApplication extends SpringBootServletInitializer {
    // 这个main方法是应用程序的入口方法。它使用SpringApplication类的run方法来启动Spring
    // Boot应用程序。它接受应用程序的主类和命令行参数作为参数。
    public static void main(String[] args) throws Exception {
        SpringApplication.run(OnlineMonitoringApplication.class, args);
    }

    // 这个方法是重写SpringBootServletInitializer类的configure方法。它用于配置Spring
    // Boot应用程序的部署设置。在这个方法中，将应用程序的主类设置为builder的sources，以便将应用程序部署为WAR文件时能够正确加载
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(OnlineMonitoringApplication.class);
    }
}
